# 创建两个模板标签
from django import template
from sqlalchemy.testing.provision import register

# 初始化一个模板库
register = template.Library()

@register.filter
def field_type(bound_field):
    """
    获取字段的类型

    参数:
    - bound_field: 绑定的表单字段对象

    返回:
    - 字段小部件类的名称
    """
    return bound_field.field.widget.__class__.__name__
    # return bound_field.field.__class__.__name__

@register.filter
def input_class(bound_field):
    """
    为表单字段动态分配CSS类

    参数:
    - bound_field: 绑定的表单字段对象

    返回:
    - 根据表单状态动态生成的CSS类字符串
    """
    css_class = ''
    if bound_field.form.is_bound:
        if bound_field.errors:
            css_class = 'is-invalid'
        elif field_type(bound_field) != 'PasswordInput':
            css_class = 'is-valid'
    return 'form-control {}'.format(''+ css_class if css_class else '')
